package com.hc.util;

import com.alibaba.fastjson.JSONObject;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaAliqinFcSmsNumSendRequest;
import com.taobao.api.response.AlibabaAliqinFcSmsNumSendResponse;

import java.util.Random;

/**
 * 
 * @Description: 短信发送工具类
 * @author Young
 * @date 2016年10月20日
 *
 */
public class MessageSendUtil {
	private static final String appkey = "xxxxx";
	private static final String secret = "xxxxxxxxxxxxxxxxxxx";

	/**
	 * 
	 * @Description： 阿里大鱼短信发送，生成4为随机验证码
	 * 
	 * @param tel
	 * @param type
	 * @return
	 * @author:
	 * @date: 2016年10月20日 下午4:46:01
	 */
	public static JSONObject sendMessage(String tel, String type) {
		try {
			TaobaoClient client = new DefaultTaobaoClient("http://gw.api.taobao.com/router/rest", appkey, secret);
			AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
			String radomInt = getRandNum(4); //设置生成4位
			if (type.equals("reg")) {
				req.setSmsType("normal");
				req.setSmsFreeSignName("注册验证");
				req.setSmsParamString(JsonUtil.jsonFomart(radomInt, "Hc-O", OtherUtils.getCurrentDate().substring(11))
						.toJSONString());
				req.setRecNum(tel);
				// TODO:获取TemplateCode
				req.setSmsTemplateCode("xxxxxxx");
			} else if (type.equals("modify")) {
				req.setSmsType("normal");
				req.setSmsFreeSignName("变更验证");
				req.setSmsParamString(JsonUtil
						.jsonFomart(radomInt, "XXXX账号", OtherUtils.getCurrentDate().substring(11)).toJSONString());
				req.setRecNum(tel);
				// TODO:获取TemplateCode
				req.setSmsTemplateCode("xxxxxxx");
			}
			AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req);
			JSONObject obj = new JSONObject();
			obj.put("isSuccess", rsp.isSuccess() ? "1" : "2");
			obj.put("radomInt", radomInt);
			return obj;
		} catch (Exception e) {
			LoggerUtil.logInfo(e, "获取验证码出错");
			JSONObject obj = new JSONObject();
			obj.put("isSuccess", "2");
			obj.put("radomInt", 0);
			return obj;
		}

	}

	/**
	 * 
	 * @Description： 生成指定位数验证码
	 * 
	 * @param charCount 生成位数
	 * @return
	 * @date: 2016年10月20日 下午4:44:05
	 */
	public static String getRandNum(int charCount) {
		String charValue = "";
		for (int i = 0; i < charCount; i++) {
			char c = (char) (randomInt(0, 10) + '0');
			charValue += String.valueOf(c);
		}
		return charValue;
	}

	/**
	 * 
	 * @Description： 随机数生成
	 * 
	 * @param from 最小数
	 * @param to 最大
	 * @return
	 * @date: 2016年10月20日 
	 */
	public static int randomInt(int from, int to) {
		Random r = new Random();
		return from + r.nextInt(to - from);
	}

}
